#ifndef _SASLPLAINMECHANISM_H_
#define _SASLPLAINMECHANISM_H_

/**
 * Implementation of the SASL PLAIN mechanisn as defined by the
 * <a href="http://www.ietf.org/internet-drafts/draft-ietf-sasl-plain-08.txt">IETF draft
 * document</a>.
 *
 * @author Gaston Dombiak
 */
class SASLPlainMechanism : public SASLMechanism {
public:
	SASLPlainMechanism(SASLAuthentication * saslAuthentication) : SASLMechanism(saslAuthentication) {}

protected:
	std::string getName() {
        return "PLAIN";
    }

	std::string getAuthenticationText(std::string & username, std::string & host, std::string & password);

    std::string getChallengeResponse(/*byte[] bytes*/) {
        // Return null since this mechanism will never get a challenge from the server
        return NULL;
    }
};

#endif // -- _SASLPLAINMECHANISM_H_
